package com.shrcl.engineerprocess.domain;

import com.shrcl.engineerprocess.domain.Engineer;
import com.shrcl.engineerprocess.domain.EngineerLevel;
import com.shrct.businessprocess.organization.RCEmployee;
import edu.fudan.mylang.pf.IDAOService;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

public interface EngineerDAO extends IDAOService<Engineer> {
  public abstract Engineer create(final Procedure1<? super Engineer> updater);
  
  public abstract void delete(final Engineer engineer);
  
  public abstract Engineer asEngineer(final RCEmployee employee);
  
  public abstract Collection<Engineer> getAllLevelEngineers(final EngineerLevel engineerLevel);
  
  public abstract Double getAvgEngineerLevelCost(final EngineerLevel engineerLevel, final Date mon);
  
  public abstract void asAndInitEngineer(final RCEmployee employee);
  
  public abstract void inActiveAllEngineers();
}
